|
Date : 12 septembre 1993 Protection : MOT DE PASSE Programme : SPACE CRUSADE Outils : SOFT-ICE V2.50 Fichier : ? Temps pass� : 20 minutes. Soci�t� : Divers : Cod� avec RNC Origine : JKT Num�ro : 223 On tourne dans la boucle suivante tant que l'on ne tape pas ENTER: CS=0F78 CS:95DB E80D00 CALL 95EB <ͻ CS:95DE 0AC0 OR AL,AL � CS:95E0 74F9 JZ 95DB >ͼ CS:95E2 50 PUSH AX ET ON ARRIVE ICI SI ENTER... Le controle des chars. se fait ci-dessous. On place 0000 dans DS:4B75 si tout est OK sinon on y laisse le 0001 d'origine. CS=0F78 CS:B680 B90800 MOV CX,0008 ; 8 CHARS A CONTROLER. CS:B683 AC LODSB ; LA BOUCLE DE TEST. CS:B684 3A05 CMP AL,[DI] ; ON COMPARE LES CHARS. CS:B686 750A JNZ B692 ; SI PAS OK ON VA EN B692. CS:B688 47 INC DI ; SUIVANT... CS:B689 E2F8 LOOP B683 ; ON BOUCLE. CS:B68B C706754B0000 MOV WORD PTR [4B75],0000 ; ICI SI OK. CS:B691 C3 RET ; ET ON S'EN VA... CS:B692 .... .... ; SUITE SI REPONSE MAUVAISE. Apr�s le RET on compare le contenu de 4B75 avec 0 et on saute ou pas... Pour le patch il suffit de remplacer le saut conditionnel en B686 par un saut inconditionnel apr�s la boucle pour placer 0000 dans 4B75. Donc remplacer le mot 750A par EB03 en CS:B686. Soft-ice m'avait dit que la derni�re INT utilis�e �tait la 1C, mais en l'utilisant mon lanceur ne trouve pas le patch. En fait je m'aper�ois que le jeu d�tourne l'INT 1C d�s le d�but. Pas de pot... Je prends quelque chose de plus classique: l'INT 21 sf 3E et �a marche. ; PATCH POUR LE PROGRAMME SPACE CRUSADE ; DETOURNEMENT DE L'INT 21 ; ;****************************************************************************** ; ZONE A INITIALISER adr_ip1 equ 0b686h ; adresse dont le contenu est � modifier. ; valeur directe. anc_val equ 0a75h ; Valeur d'origine � rechercher. Invers�e. nouv_val equ 03EBh ; Nouvelle valeur, JMP INT_DET equ 21h ; Le num�ro de l'INT que l'on veut utiliser. sf equ 3eh BEEP_TONE equ 440 ; Fr�quence de la note. ;****************************************************************************** ; Cette partie omise est identique � tous mes lan�eurs... ;****************************************************************************** db 55h,0aah ; Identificateur de d�but. chaine: db '��������FREDDY_SOFT!������Ŀ' db '� �' db '� SPACE CRUSADE �' db "� I hope you'll enjoy it �" db '� �' db '��� Lan�eur Crypt� V1.1 ����' mess_err db 0ah,0dh,'Programme enfant non trouv�','$' nom_prg db 'space.exe',0,0,0,0 ; 12 car max + nul chaine_fin: db 0aah,55h ; Identificateur de fin. fin_init label near ;----------------------- PLACE RESERVEE POUR LA PILE ------------------------ dw 100 dup (' ') fin equ this byte ; ici le sommet de la pile, SP. seg_a ends end start |